/***********************************************************************************
 * 文件名： typedef.h
 * 版本： 1
 * 说明：
 * 		中微 SCMCU 系列MCU的类型定义文件。 统一变量类型，和常用关键字。
 * 修改记录：
 * 	2021/04/28: 初版。 刘言。
***********************************************************************************/
#ifndef _TYPEDEF_H_
#define _TYPEDEF_H_

#include <stdint.h>	// 编译器库文件
#include <stdbool.h>
#include <stddef.h>

typedef unsigned char  			byte;
typedef unsigned char  			u8;
typedef uint16_t  			    u16;
typedef uint32_t  			    u32;

typedef signed char  			s8;
typedef int16_t  			    s16;
typedef int32_t  			    s32;

typedef volatile unsigned char  vu8;
typedef volatile uint16_t 	    vu16;
typedef volatile uint32_t 	    vu32;

typedef volatile signed char  	vs8;
typedef volatile int16_t  		vs16;
typedef volatile int32_t  	    vs32;


//非51内核定义以下以关键字兼容51代码

    #define data
    #define idata 
    #define pdata 
    #define xdata     
    #define code
    #define C51_CODE

//	#define bit		本MCU支持 bit


//非STM8_IAR单片机定义以下关键字兼容STM8代码

    #define     __far
    #define     __near 
    #define     __no_init
    #define     __eeprom


// 申明不需要初始化的变量
#define NO_INIT     persistent


// 该MCU使用inline可能会有问题，因此这里不使用
// #define IN_LINE     			inline
// #define FORCE_IN_LINE			inline
// #define STATIC_IN_LINE			static inline
// #define STATIC_FORCE_IN_LINE   	static inline
#define IN_LINE     			
#define FORCE_IN_LINE			
#define STATIC_IN_LINE			static 
#define STATIC_FORCE_IN_LINE   	static 

typedef struct _tm
{
	u8 Second;
	u8 Minute;
	u8 Hour;
	u8 Day;
	u8 Week;
	u8 Month;
	u8 Year;
	u8 Zone;
}tm_t;


#endif
